package com.gitee.slowcreator.http.file.download;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Arrays;
import java.util.Map;

/**
 * 下载结果
 *
 * @author zxw
 * @date 2023/6/10 11:33
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DownloadResult {

    /**
     * byte数据
     */
    @JsonIgnore
    private transient byte[] data;

    // =============== 以下参数为保存文件后的参数 使用byte时不使用 ===============

    /**
     * 原始文件名
     */
    private String originFileName;

    /**
     * 保存的文件路径
     */
    private String savePath;

    /**
     * 新文件名
     */
    private String newFileName;

    /**
     * 扩展参数
     */
    private Map<String, Object> extendParams;

    /**
     * 请求结果 是否成功
     */
    private boolean requestSuccess;

    @Override
    public String toString() {

        return "DownloadResult{" +
                "data=" + Arrays.toString(data) +
                ", originFileName=" + originFileName +
                ", savePath=" + savePath +
                ", newFileName='" + newFileName + '\'' +
                ", extendParams=" + extendParams +
                ", requestSuccess=" + requestSuccess +
                '}';
    }

    /**
     * 不输出 data字段 这里可能是文件 很大
     *
     * @param removeDate 是否不输出data字段
     * @return
     */
    public String toString(boolean removeDate) {

        if (!removeDate) {
            return toString();
        }

        return "DownloadResult{" +
                "originFileName=" + originFileName +
                ", savePath=" + savePath +
                ", newFileName=" + newFileName +
                ", extendParams=" + extendParams +
                ", requestSuccess=" + requestSuccess +
                '}';
    }
}
